The ARINC 429 data bus is used for transmission of data between avionics units. The bus is a broadcast bus with one transmitter transmitting to multiple receivers. The data path between the sending and receiving units includes many elements such as a transmitter, receiver, input/output controller, memory, and processor interface electronics. An error could be introduced during transmission through any of these elements. If errors are undetected, there could be serious consequences in critical flight avionics applications. This often leads to the incorporation of costly additional redundancy.
A Cyclic Redundancy Check (CRC) exists to check the data transmitted on an ARINC 429 bus and provide the critical means necessary to detect for errors. CRCs are well known in the data communications area of technology. The CRC is performed by defining a dividend based on the data to be checked. The resultant remainder is the CRC. Usually, the CRC is added at the end of the data when it is transmitted. The integrity of the checked data can be verified on the receiving end by reassembling the data, computing the CRC, and comparing it to the received CRC attached to the data. If the CRCs match then no error exists.
Data can be sent over the bus periodically or aperiodically. Aperiodic data is event driven which means that data is requested and in reply to the request, data is sent. Currently, aperiodic data is transmitted in the ARINC 429 as blocks of data which can be thought of as a pulse of data. FIG. 1 shows aperiodic data which has a start, designated by a header, and an end, designated by an end, with data words in between. With aperiodic data, the end of the block is where the CRC information is embedded.
A label is used to give a designation to the data. At the receiving unit, desired data to be checked is identified and sampled by the data label. Sampling is basically retrieving data based on the label desired. Once the data is sampled, the data is retrieved so that a CRC is performed. All aperiodic data in a block has the same label. Therefore, each data word in the block has the same label attached to it. Due to the format of the block, it is important to keep track of the sequence the data is sent so that it may arrive at the receiving unit in the same block order.
Periodic data, on the other hand, is sent periodically with the data words sent in any order and not in the form of a block. The transmission is time critical and clock driven. However, with this type of databus and associated avionics architecture, the clocks of the transmitting and receiving units are not synchronized. As a result, the data could be sampled such that the received CRC check word corresponds to a different data set than the sampled data set. The CRC computed would not match the CRC attached and an error signal would be sent when in fact, an error may not truly exist. Without a synchronization mechanism, this occurs often enough to render CRC checking unsafe.
FIG. 2 shows an example of erroneous sampling which is symbolized by the dashes. As stated before, this erroneous sampling results in errors detected incorrectly.
Each block of five words represents a message and associated CRC. The horizontal line with an arrowhead indicates the direction the data is moving. Therefore, block A moves through the databus first, and then block B and then block C. As can be seen in block B, for example, one word from block A data set is sampled along with an incomplete block B data. This results in an inconsistent sampled data set and consequent erroneous failure of the CRC.
As a result, it would be beneficial and critical to have a means available for CRC integrity checking for periodic data which overcomes the inherent limitations of asynchronous sampling.